package com.hpq.user.service;

import com.hpq.common.domain.vo.request.CursorPageBaseReq;
import com.hpq.common.domain.vo.request.PageBaseReq;
import com.hpq.common.domain.vo.response.CursorPageBaseResp;
import com.hpq.common.domain.vo.response.PageBaseResp;
import com.hpq.user.domain.vo.request.friend.FriendApplyReq;
import com.hpq.user.domain.vo.request.friend.FriendCheckReq;
import com.hpq.user.domain.vo.request.friend.FriendDeleteReq;
import com.hpq.user.domain.vo.response.friend.FriendApplyResp;
import com.hpq.user.domain.vo.response.friend.FriendCheckResp;
import com.hpq.user.domain.vo.response.friend.FriendResp;

import javax.validation.Valid;

public interface FriendService {
    /**
     * 获取好友列表
     * @param uid
     * @param req
     * @return
     */
    CursorPageBaseResp<FriendResp> getFriendList(Long uid, @Valid CursorPageBaseReq req);

    /**
     *  检查是否为好友
     * @param uid
     * @param req
     * @return
     */
    FriendCheckResp check(Long uid, @Valid FriendCheckReq req);

    /**
     *  申请好友
     * @param uid
     * @param req
     */
    void apply(Long uid, @Valid FriendApplyReq req);

    /**
     *  删除好友
     * @param uid
     * @param req
     */
    void deleteFriend(Long uid, @Valid FriendDeleteReq req);

    /**
     *  获取好友申请列表
     * @param uid
     * @param req
     * @return
     */
    PageBaseResp<FriendApplyResp> getFriendApplyByPage(Long uid, @Valid PageBaseReq req);
}
